package com.gbb.common.utils;

import android.content.Context;
import android.util.DisplayMetrics;
import android.view.WindowManager;

import com.gbb.common.AppUtils;

/**
 * dp、sp 转换为 px 的工具类
 *
 * @author gaobingbing91
 */
public class DensityUtils {

    /**
     * p将px值转换为dip或dp值，保证尺寸大小不变
     *
     * @param pxValue px值
     * @return dpValue
     */
    public static int px2dip(float pxValue) {
        return (int)(pxValue/getDensity() + 0.5f);
    }

    /**
     * 将dip或dp值转换为px值，保证尺寸大小不变
     *
     * @param dipValue dp值
     * @return pxValue
     */
    public static int dip2px(float dipValue) {
        return (int)(dipValue*getDensity() + 0.5f);
    }

    /**
     * 将px值转换为sp值，保证文字大小不变
     *
     * @param pxValue px值
     * @return spValue
     */
    public static int px2sp(float pxValue) {
        return (int)(pxValue/getDensity() + 0.5f);
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     *
     * @param spValue sp值
     * @return pxValue
     */
    public static int sp2px(float spValue) {
        return (int)(spValue*getDensity() + 0.5f);
    }

    private static float getDensity() {
        WindowManager wm = (WindowManager)AppUtils.get().getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics outMetrics = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(outMetrics);
        return outMetrics.density;
    }

}